a = 'Cas23423daC++dsDADa2342dJava2432weqPython1231C#'
# print(a.index('Python') > -1)
# print('Python' in a)

import re

# print(re.findall('Python',a))

#提取所有数字
print(re.findall('[0-9]',a))
print(re.findall('\d',a))   #\d表示寻找数字，\D表示寻找非数字
#提取所有字母
print(re.findall('[a-z]|[A-Z]',a))#\w表示单词字符
print(re.findall('\w',a))#\w表示单词字符[a-zA-z0-9_]  \W表示非单词字符


s = 'abc,acc,adc,aec,afc,ahc'
#寻找以ac为结尾的字符
r = re.findall('a[a-z]c',s)
print(r)

#数量词的用法
a = 'python 1111java678php'
print(re.findall('[a-z]{3,6}',a)) #长度为3-6
print(re.findall('[a-z]{3,6}?',a)) #非贪婪
#默认贪婪
#非贪婪

#通配符
# * 匹配0次或者多次
# + 匹配1次或者多次
# ? 匹配0次或者1次
# . 匹配除\n外的其他字符
a = 'pytho1python2pythonn3'
print(re.findall('python*',a))
print(re.findall('python+',a))
print(re.findall('python?',a))
print(re.findall('python{1,2}',a))
print(re.findall('python{1,2}?',a))

#边界匹配
qq = '23142243'
print(re.findall('^\d{4,8}$',qq))
#^从字符串头开始匹配，$从尾开始匹配

#分组匹配
a = 'pytho1python2pythonn3'
#是否包含3个python
print(re.findall('(python){1}',a))
#第3个参数flags=re.I忽略字母大小写,re.S表示能够匹配转义字符
# def findall(pattern, string, flags=0):

xgp = 'adasdafdafxgp1231sdsa'
print(re.sub('xgp','   ',xgp)) #替换
xgp = 'adasdafdafxgp1231sdsa'
print(xgp.replace('xgp','   ')) #替换


#第二个参数可以传入函数,把业务交给自己处理
xgp = 'adasdafdafxgp1231sdsa'
def convert(value):
    print(value)
    return '   ' + value.group() + '   '
print(re.sub('xgp',convert,xgp))

#作用
s = 'ABC678712o3032814329'
#把>6的数字改成#
def change(value):
    mat = value.group()
    if int(mat) > 6:
        return '#'
    else:
        return '&'
print(re.sub('\d',change,s))

#re.match()函数，从字符串开始进行匹配
#re.seach()函数，搜索找到符合结果的字串并返回，返回的是对象

